/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package arbol_sintactico_abstracto;

import analizadorlexico.Token;
import generador_de_codigo.GeneradorDeCodigo;
import java.io.IOException;
import tabla_de_simbolos.Clase;
import tabla_de_simbolos.Constructor;
import tabla_de_simbolos.ErrorSemantico;
import tabla_de_simbolos.Metodo;
import tabla_de_simbolos.TablaDeSimbolos;
import tabla_de_simbolos.Tipo;

/**
 *
 * @author Javi
 */
public class This extends Primario{

    private Token token;

    public This(Token token) {
        this.token = token;
    }  
    
    
    @Override
    public Tipo check(Clase clase, Constructor metodo, TablaDeSimbolos ts) throws ErrorSemantico, IOException {
        if (metodo.getModMetodo().getModificador().equals("static")){
            throw new ErrorSemantico("No se permite hacer referencia al objeto This desde un metodo estatico "+ token.getLinea());            
        }
        GeneradorDeCodigo.generar("LOAD  3 \n");
        return clase;
    }
}
